// store/index.ts

import { createStore } from "vuex";
import settings from "./modules/settings"; // 导入 settings 模块
import users from "./modules/users"; // 导入 users 模块
import parking from "./modules/parking"; // 导入 parking 模块
import { VideoType } from "@/types/types"; // 导入 VideoType 类型
import mocking from "./modules/mocking";
import themeStore from "./app"; // 导入 themeStore

// 定义 Vuex state 的类型
interface State {
  selectedVideo: VideoType | null; // 存储整个视频对象，包括 camera_id
}

export default createStore<State>({
  state: {
    selectedVideo: null, // 存储整个视频对象
  },
  mutations: {
    setSelectedVideo(state: State, video: VideoType | null) {
      // 明确 state 的类型
      state.selectedVideo = video; // 直接存储视频对象
    },
  },
  actions: {
    updateSelectedVideo({ commit }, video: VideoType | null) {
      // 允许传入 VideoType 或 null
      commit("setSelectedVideo", video); // 提交整个视频对象
    },
  },
  getters: {
    // 返回整个选定的视频对象
    getSelectedVideo: (state: State): VideoType | null => state.selectedVideo, // 明确 state 的类型
  },
  modules: {
    parking, // 将 parking 模块注册到 store 中
    settings, // 注册 settings 模块
    users,
    mocking,
    themeStore,
  },
});
